home *** CD-ROM | disk | FTP | other *** search
/ IRIX 6.2 Development Libraries / SGI IRIX 6.2 Development Libraries.iso / dist / complib.idb / usr / share / catman / p_man / cat3 / complib / slasr.z / slasr
Text File  |  1996-03-14  |  4KB  |  133 lines

  1.  
  2.  
  3.  
  4. SSSSLLLLAAAASSSSRRRR((((3333FFFF))))                                                            SSSSLLLLAAAASSSSRRRR((((3333FFFF))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      SLASR - perform the transformation   A := P*A, when SIDE = 'L' or 'l' (
  10.      Left-hand side )   A := A*P', when SIDE = 'R' or 'r' ( Right-hand side )
  11.      where A is an m by n real matrix and P is an orthogonal matrix,
  12.  
  13. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  14.      SUBROUTINE SLASR( SIDE, PIVOT, DIRECT, M, N, C, S, A, LDA )
  15.  
  16.          CHARACTER     DIRECT, PIVOT, SIDE
  17.  
  18.          INTEGER       LDA, M, N
  19.  
  20.          REAL          A( LDA, * ), C( * ), S( * )
  21.  
  22. PPPPUUUURRRRPPPPOOOOSSSSEEEE
  23.      SLASR   performs the transformation consisting of a sequence of plane
  24.      rotations determined by the parameters PIVOT and DIRECT as follows ( z =
  25.      m when SIDE = 'L' or 'l' and z = n when SIDE = 'R' or 'r' ):
  26.  
  27.      When  DIRECT = 'F' or 'f'  ( Forward sequence ) then
  28.  
  29.         P = P( z - 1 )*...*P( 2 )*P( 1 ),
  30.  
  31.      and when DIRECT = 'B' or 'b'  ( Backward sequence ) then
  32.  
  33.         P = P( 1 )*P( 2 )*...*P( z - 1 ),
  34.  
  35.      where  P( k ) is a plane rotation matrix for the following planes:
  36.  
  37.         when  PIVOT = 'V' or 'v'  ( Variable pivot ),
  38.            the plane ( k, k + 1 )
  39.  
  40.         when  PIVOT = 'T' or 't'  ( Top pivot ),
  41.            the plane ( 1, k + 1 )
  42.  
  43.         when  PIVOT = 'B' or 'b'  ( Bottom pivot ),
  44.            the plane ( k, z )
  45.  
  46.      c( k ) and s( k )  must contain the  cosine and sine that define the
  47.      matrix  P( k ).  The two by two plane rotation part of the matrix P( k ),
  48.      R( k ), is assumed to be of the form
  49.  
  50.         R( k ) = (  c( k )  s( k ) ).
  51.                  ( -s( k )  c( k ) )
  52.  
  53.      This version vectorises across rows of the array A when SIDE = 'L'.
  54.  
  55.  
  56. AAAARRRRGGGGUUUUMMMMEEEENNNNTTTTSSSS
  57.      SIDE    (input) CHARACTER*1
  58.              Specifies whether the plane rotation matrix P is applied to A on
  59.              the left or the right.  = 'L':  Left, compute A := P*A
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. SSSSLLLLAAAASSSSRRRR((((3333FFFF))))                                                            SSSSLLLLAAAASSSSRRRR((((3333FFFF))))
  71.  
  72.  
  73.  
  74.              = 'R':  Right, compute A:= A*P'
  75.  
  76.      DIRECT  (input) CHARACTER*1
  77.              Specifies whether P is a forward or backward sequence of plane
  78.              rotations.  = 'F':  Forward, P = P( z - 1 )*...*P( 2 )*P( 1 )
  79.              = 'B':  Backward, P = P( 1 )*P( 2 )*...*P( z - 1 )
  80.  
  81.      PIVOT   (input) CHARACTER*1
  82.              Specifies the plane for which P(k) is a plane rotation matrix.  =
  83.              'V':  Variable pivot, the plane (k,k+1)
  84.              = 'T':  Top pivot, the plane (1,k+1)
  85.              = 'B':  Bottom pivot, the plane (k,z)
  86.  
  87.      M       (input) INTEGER
  88.              The number of rows of the matrix A.  If m <= 1, an immediate
  89.              return is effected.
  90.  
  91.      N       (input) INTEGER
  92.              The number of columns of the matrix A.  If n <= 1, an immediate
  93.              return is effected.
  94.  
  95.              C, S    (input) REAL arrays, dimension (M-1) if SIDE = 'L' (N-1)
  96.              if SIDE = 'R' c(k) and s(k) contain the cosine and sine that
  97.              define the matrix P(k).  The two by two plane rotation part of
  98.              the matrix P(k), R(k), is assumed to be of the form R( k ) = (
  99.              c( k )  s( k ) ).  ( -s( k )  c( k ) )
  100.  
  101.      A       (input/output) REAL array, dimension (LDA,N)
  102.              The m by n matrix A.  On exit, A is overwritten by P*A if SIDE =
  103.              'R' or by A*P' if SIDE = 'L'.
  104.  
  105.      LDA     (input) INTEGER
  106.              The leading dimension of the array A.  LDA >= max(1,M).
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.